package com.epsilon.pos.principal.almacenes.viewers;

import java.util.List;
import java.util.Map;

import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.IStructuredContentProvider;
import org.eclipse.jface.viewers.ITableLabelProvider;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.graphics.Image;

import com.epsilon.pos.principal.almacenes.model.Almacen;
import com.epsilon.pos.principal.almacenes.model.ArticuloUnitarioAlmacen;

import static com.epsilon.pos.principal.almacenes.provider.AlmacenesPrincipalModelProvider.getMapaDeAlmacenes;

public class AlmacenesPrincipalProductosTableConfig implements IStructuredContentProvider, ITableLabelProvider {

	@Override
	public void dispose() {
	}

	@Override
	public void inputChanged( Viewer arg0, Object arg1, Object arg2 ) {
	}

	@Override
	public void addListener( ILabelProviderListener arg0 ) {
	}

	@Override
	public boolean isLabelProperty( Object arg0, String arg1 ) {
		return false;
	}

	@Override
	public void removeListener( ILabelProviderListener arg0 ) {
	}

	@Override
	public Image getColumnImage( Object arg0, int arg1 ) {
		return null;
	}

	@Override
	public String getColumnText( Object element, int index ) {

		ArticuloUnitarioAlmacen articulo = (ArticuloUnitarioAlmacen)element;
		Almacen alm = getMapaDeAlmacenes().get( articulo.getIdAlmacen().toString() );

		switch( index ) {
			case 0:
				return alm.getDescripcion();
			case 1:
				return articulo.getArticuloUnitario().getCodigo();
			case 2:
				return articulo.getArticuloUnitario().getDescripcion();
			case 3:
				return articulo.getArticuloUnitario().getMarca();
			case 4:
				return (articulo.getCantidad() != null ? articulo.getCantidad().toString() : "N.A." );
			case 5:
				return (articulo.getFoliado() != null ? articulo.getFoliado().toString() : "N.A.");
		}
		
		return null;
	}

	@Override
	@SuppressWarnings( "rawtypes" )
	public Object [] getElements( Object list ) {
		if( list instanceof Map ) {
			Map mapa = (Map)list;

			return mapa.values().toArray();
		} else if( list instanceof List ) {
			List lista = (List)list;

			return lista.toArray();
		}

		return null;
	}
}